/*
  Dart常量: final 和 const修饰符
      const声明的常量是在编译时确定的,永远不会改变
      final声明的常量允许声明后再赋值，赋值后不可改变，final声明的变量是在运行时确定的
      final不仅有const的编译时常量的特性，最重要的它是运行时常量，并且final是惰性初始化
*/ 

void main(List<String> args) {
  // const定义常量
  // var PI = 3.14;
  // PI = 333;
  // const pi2 = 3.14;
  // // pi2 = 33;//爆红，因为pi2是常量，不允许修改
  // print(PI);
  // print(pi2);


  // final 常量
  final PI = 3.14;
  print(PI);
  final a;
  a = 2;//final允许先声明再赋值，但是赋值之后是不允许再改变的
  // a =3;//爆红，因为a已经被赋值过了
  print(a);
}